package com.yidu.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Service;

import com.yidu.common.Tools;
import com.yidu.dao.ListenManufactureMapper;
import com.yidu.dao.ListenProductionDetailMapper;
import com.yidu.dao.ListenProductionMapper;
import com.yidu.domain.ListenBackstageUser;
import com.yidu.domain.ListenManufacture;
import com.yidu.domain.ListenProduction;
import com.yidu.domain.ListenProductionDetail;
import com.yidu.service.ListenManufactureService;

/**
 * @title 制造Service实现类 
 * @author 江宇
 * @dateTime 2019年1月16日
 */
@Service
public class ListenManufactureServiceImpl implements ListenManufactureService {
	
	@Resource
	ListenManufactureMapper dao;
	
	@Resource
	ListenProductionDetailMapper pdDao;
	
	@Resource
	ListenProductionMapper prodDao;
	
	 /**
     * @title 根据生产计划ID查询制造 
     * @param Map
     * @return List
     * @author 江宇
     * @dateTime 2018年12月19日
     * @versions 1.0
     */
	@Override
	public List<ListenManufacture> findByProdId(Map<String, Object> map) {
	 
		return dao.findByProdId(map);
	}

	 /**
     * @title 根据生产计划ID查询制造行数
     * @param Map
     * @return int
     * @author 江宇
     * @dateTime 2018年12月19日
     * @versions 1.0
     */
	@Override
	public int findByProdIdCount(Map<String, Object> map) {
		 
		return dao.findByProdIdCount(map);
	}

	
	/**
     * @title  根据生产明细ID查询制造数据
     * @param String
     * @return Map
     * @author 江宇
     * @dateTime 2018年12月19日
     * @versions 1.0
     */
	@Override
	public List<ListenManufacture> findManufactureNumber(String prodId) {
		 
		return dao.findManufactureNumber(prodId);
	}
	
	 /** 
     * @title 增加制造 
     * @param ListenManufacture
     * @return int
     * @author 江宇
     * @dateTime 2018年12月20日
     * @versions 1.0
     */
	@Override
	public int addManufacture(String manufactureText,Integer noNumber,String prodId,HttpSession session) {
		//获取登陆的Session
		ListenBackstageUser users = (ListenBackstageUser) session.getAttribute("user");
		int rows=0;
		//按#号拆分前台传来的制造字符串
		String manufactureTexts[]=manufactureText.split("#");
		//循环拆分后的制造数组
		for (int i = 0; i < manufactureTexts.length; i++) {
			//如果拆分后的数组按,号拆分下标第八个==1
			if(Integer.valueOf(manufactureTexts[i].split(",")[8])==1) {
				//创建生产计划明细类对象
				ListenProductionDetail pd=new ListenProductionDetail();
				//生产状态已完成(1)
				pd.setPdStatus(1);
				//生产计划ID赋值 数组,号拆分0
				pd.setPdId(manufactureTexts[i].split(",")[0]);
				//调用生产计划明细修改的方法
				rows=pdDao.updateByPrimaryKeySelective(pd);
			}
			 
			//创建制造类对象
			ListenManufacture mf=new ListenManufacture();
			//UUID主键
			mf.setMfId(Tools.getRandomString(32));
			//生产计划ID赋值 数组,号拆分0
			mf.setPdId(manufactureTexts[i].split(",")[0]);
			//乐器ID赋值 数组,号拆分1
			mf.setMuId(manufactureTexts[i].split(",")[1]);
			//乐器名称赋值 数组,号拆分2
			mf.setMuName(manufactureTexts[i].split(",")[2]);
			//制造数量赋值 数组,号拆分5
			mf.setMfFinish(Integer.valueOf(manufactureTexts[i].split(",")[5]));
			//未完成部分赋值 数组,号拆分6
			mf.setMfNoComplete(Integer.valueOf(manufactureTexts[i].split(",")[6]));
			//制造次数赋值 数组,号拆分7 +1
			mf.setMfNumber(Integer.valueOf(manufactureTexts[i].split(",")[7])+1);
			//是否完成赋值 数组,号拆分8
			mf.setMfComplete(Integer.valueOf(manufactureTexts[i].split(",")[8]));
			//制造时间赋值
			mf.setMfTime(new Date());
			//是否有效(有效)
			mf.setIsva(1);
			//操作人赋值
			mf.setOper(users.getBuName());
			//调用增加制造的方法
			rows=dao.insertSelective(mf);
		}
		
		//创建生产计划类对象
		ListenProduction prod=new ListenProduction();
		//如果所有制造的乐器未完成数量==0
		if(noNumber==0) {
			//生产计划ID赋值
			prod.setProdId(prodId);
			//生产计划数量赋值0
			prod.setProdNumber(0);
			//生产状态赋值已完成(2)
			prod.setManufactureType(2);
			//调用修改生产计划的方法
			rows=prodDao.updateByPrimaryKeySelective(prod);
		}else if(noNumber>0) {//如果所有制造的乐器未完成数量>0
			//生产计划ID赋值
			prod.setProdId(prodId);
			//生产计划数量赋值(所有制造的乐器未完成数量)
			prod.setProdNumber(noNumber);
			//生产状态赋值未完成(1)
			prod.setManufactureType(1);
			//调用修改生产计划的方法
			rows=prodDao.updateByPrimaryKeySelective(prod);
		}
		return rows;
	}

}
